/* ************************************************************************************************

	Copyright (c) 2005-2006, IGR
	All Rights Reserved.
	Licensed under the Apache License version 2.0 or above.
	For more information on licensing, see:
        http://www.apache.org/licenses/


 ************************************************************************************************
 Objet CONTEXTUAL MENU
 VERSION:0.85
 DATE:15/06/2006
 ************************************************************************************************
Init parameter in objPar (object of parameter):

 Name:                name of the element
 width:               width in pixel
 avecImage  		  with image 
 posFixe     		  true if the menu have a fixed position
 posTop     		  if fixed this is the top position
 posLeft     		  if fixed this is the left position
 className 			  className of the menu
// ************************************************************************************************/
/*
This object kneed to be fusion with simpleMenu.js.....?

*/
// *************************************
// CONSTRUCTOR
// *************************************


objMenuCont.prototype.nbreInstance=0;

function objMenuCont(name,width,objPar){
        
        // PROPERTY
        this.name=name;
        this.id= name+"_"+(objMenuCont.prototype.nbreInstance++);                
        if (rialto.lang.isNumber(width)){
            this.width = width;
        }
        else{
            this.width = '100%';            
        }                                        
        ////GLOBAL COLLECTION
        rialto.session.reccord(this,this.id);       
        
        //Default value
        this.avecImage = false;
        this.position ="absolute";
        this.posFixe = false;
        this.posTop=0;        
        this.posLeft=0;
        this.className=null;
        
        //set the value with the properties of the objPar object
        if (objPar != null){               
            if (rialto.lang.isBoolean(objPar.avecImage)){
                this.avecImage = objPar.avecImage;        
            }            
            if (rialto.lang.isStringIn(objPar.position,["static","absolute","relative"])){
            	this.position = objPar.position;        
        	} 
            if (rialto.lang.isBoolean(objPar.posFixe)){
                this.posFixe = objPar.posFixe;        
            }
            if (rialto.lang.isNumber(objPar.posTop)){
                this.posTop = objPar.posTop;        
            }
            if (rialto.lang.isNumber(objPar.posLeft)){
                this.posLeft = objPar.posLeft;        
            }
            if (rialto.lang.isString(objPar.className,true)){
                this.className = objPar.className;        
            }            
        }      
        
}

objMenuCont.prototype.createMenu=function(parent) {
        
	// *******************************************
	// GENERATION OF DOM ELEMENTS
	// *******************************************
             
        //DIV PRINCIPALE
        this.DivGen=document.createElement("DIV");
        this.DivGen.style.width = this.width;   
        
        
        this.DivGen.className="divMenu";        
        this.DivGen.style.position=this.position;
        this.DivGen.style.overflow="hidden";
        this.DivGen.id = this.name;                                                        
        this.DivGen.style.display='none';
        this.DivGen.style.zIndex = 10000;
        //if fixed menu
        if (this.posFixe){
            this.DivGen.style.top=this.posTop;
            this.DivGen.style.left=this.posLeft;
            this.DivGen.className="divMenuFixe";  
        }
        

        if (this.className){          
            this.DivGen.className=this.className;
        }
        
        //array of item
        this.tabItem=new Array();               
        //on ne met pas dans le body pour le moment
        parent.appendChild(this.DivGen);
        this.dansBody=false;

        // image coche
        this.divCoche=document.createElement("DIV");
        this.divCoche.className = "coche";
        this.divCoche.style.left="5px";
        coche = document.createElement("IMG");
        coche.src = "images/imgTableau/coche.gif";
        coche.style.display='inline';
        this.divCoche.appendChild(coche); 
    } 


objMenuCont.prototype.add=function(titre,actif,boolAvecCoche,boolCoche,img) {
   
    var oThis=this;
    //cr?ation d'un item
    var item=new objItemMenu(this.width,titre,actif,boolAvecCoche,img);
    //ajout au tableau
    var ind=this.tabItem.push(item)-1;
            
    //memorise l'indice dans le tableau d'item
    item.ind=ind;            
    
    item.DivGen.onclick=function(e){
        if (this.oCiu.actif){
	        this.className="divItemOff";	
            oThis.itemClick(this.oCiu.ind);            
            //arrete la propagation
            stopEvent(e);
        }
    };
    
    if (boolCoche){item.divImg.appendChild(this.divCoche);}
    
    //ajout de l'elemt HTML de l'item    
    this.DivGen.appendChild(item.DivGen);      
}

objMenuCont.prototype.itemClick=function(ind) {

    var item=this.tabItem[ind];    
    if(item.boolAvecCoche){item.divImg.appendChild(this.divCoche);}
    this.masqueMenu();
    //coding applicatif    
    this.itemClickApplicatif(ind);
    
}

objMenuCont.prototype.itemClickApplicatif=function(ind) {
   //coding applicatif    
}

objMenuCont.prototype.activeItem=function(ind) {
        
    var item=this.tabItem[ind];    
    item.actif=true;     
    item.DivGen.className="divItemOff";     
}

objMenuCont.prototype.inactiveItem=function(ind) {

    var item=this.tabItem[ind];    
    item.actif=false;
    item.DivGen.className="divItemInactif";    
}


objMenuCont.prototype.addSeparation=function() {
    //pour ajouter une s?paration dans le menu    
    var sep=document.createElement("HR");
    this.DivGen.appendChild(sep); 
}


objMenuCont.prototype.afficheMenu=function(e) {
    //si il y a d?j? un autre menu on le masque
    if (objMenuCont.prototype.menuActif){
        objMenuCont.prototype.menuActif.masqueMenu();
    }
    objMenuCont.prototype.menuActif=this;           
    this.DivGen.style.display='block';
    
    //si le menu n'est pas fixe on calcul ces coordonn?es top left
    if (!this.posFixe){        
        if (!e) var e = window.event;
        //si le parent n'est pas le body on deplace la div 
        //acause du bug de l'appendChild on cree la div dans le parent alors que on en a besoin dans le body
        if (this.dansBody==false){
            document.body.appendChild(this.DivGen);                        
            this.dansBody=true;
        }
        //positionne par rapport a l'evnmt
        positionneSelonEvent(this.DivGen,e);        
        //arrete la propagation
        stopEvent(e);
    }
}

objMenuCont.prototype.masqueMenu=function(e) {
    
    objMenuCont.prototype.menuActif=null;            
    if (!e) var e = window.event;
    this.DivGen.style.display='none';
    
}

objMenuCont.prototype.changeTitre=function(ind,titre) {
    var item=this.tabItem[ind];    
    item.changeTitre(titre);    
}

objMenuCont.prototype.remove=function() {
    if (this.DivGen && this.DivGen.childNodes){
        for (var idx=0;idx<this.DivGen.childNodes.length;idx++){
            var divGen = this.DivGen.childNodes[idx];
            if (divGen.oCiu)
                divGen.oCiu.remove();
            divGen.onclick=null;
        } 
    }
    this.DivGen.parentNode.removeChild(this.DivGen);
    rialto.session.objects[this.id]=null; 
}

/*******************ITEM DE MENU ******************************/

function objItemMenu(width,titre,actif,boolAvecCoche,img){
    
    var oThis=this;
    
    this.actif=actif;
    this.titre=titre;
    this.srcImg=img;
    
    //si coche
    if (boolAvecCoche){this.boolAvecCoche=true}
    else{this.boolAvecCoche=false}
    
    
    //div gen
    this.DivGen=document.createElement("DIV");               
    this.DivGen.style.width = width;      
    this.DivGen.style.height = '20px';   
    if (this.actif){
        this.DivGen.className="divItemOff";        
    }
    else{
        this.DivGen.className="divItemInactif";   
    }
    //div image
    this.divImg=document.createElement("DIV");               
    this.divImg.style.width = '25px';      
    this.divImg.style.height = '20px';     
    this.divImg.className="imgItem";    
    //this.divImg.style.fontSize=0;        
    if (this.srcImg && !this.boolAvecCoche){
        this.img=document.createElement("IMG");                        
        this.img.style.display="inline";        
        this.img.src=this.srcImg;            
        this.divImg.appendChild(this.img);
    }
    
            
    this.DivGen.appendChild(this.divImg);
    //div texte
    this.divTxt=document.createElement("DIV");                   
    //this.divTxt.style.left = '27px'; 
    this.divTxt.style.height = '20px';
    this.divTxt.style.width = width-27;
    this.divTxt.style.display = 'inline'; 
    this.divTxt.className="textItem";   
    
    this.divTxt.appendChild(document.createTextNode(this.titre));
    this.DivGen.appendChild(this.divTxt);

    this.DivGen.oCiu=this;
    //fonctions
        
    this.DivGen.onmouseover=function(){        
        if (oThis.actif){
            this.className+=" divItemOn";        
        }
        else{
            this.className+=" divItemInactifOn";        
        }                
    }
    
    this.DivGen.onmouseout=function(){
        if (oThis.actif){
            this.className="divItemOff";
        }
        else{
            this.className="divItemInactif";   
        }
    }
}

objItemMenu.prototype.changeTitre=function(titre) {
    //fonction pour changer le texte d'un item
    var text=document.createTextNode(titre);    
    this.divTxt.replaceChild(text,this.divTxt.firstChild);  
}

objItemMenu.prototype.remove=function() {
    this.DivGen.oCiu=null; 
    this.DivGen.onmouseover=null;
    this.DivGen.onmouseout=null;
}